package persistenciatest;

import java.util.ArrayList;
import java.util.List;

import junit.framework.TestCase;

import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;

import ar.edu.sovietrussia.Equipo;
import ar.edu.sovietrussia.Formacion;
import ar.edu.sovietrussia.FormacionStrategy;
import ar.edu.sovietrussia.FormacionStrategyImpl;
import ar.edu.sovietrussia.Jugador;
import ar.edu.sovietrussia.Posicion;
import ar.edu.sovietrussia.Titular;



public class ProbandoPersistir extends TestCase {
	public void testApp() throws Exception {
		Configuration cfg = new Configuration();
		cfg.configure();

		SessionFactory sessionFactory = cfg.buildSessionFactory();
		Session session = sessionFactory.openSession();

		Transaction transaction;
		transaction = session.beginTransaction();
		try {
			//****************************
			//EQUIPO
//			
//				Equipo e = new Equipo("equipo prueba");
//				List<Jugador> jugadores = new ArrayList<Jugador>();
//				jugadores.add(new Jugador("EL CAPO"));
//				
//				e.setJugadores(jugadores);
//				
//				session.saveOrUpdate(e);
			
				//JUGADOR
//			Jugador jugador = new Jugador("UN CAPO");
//			session.saveOrUpdate(jugador);
				
				
			//********************
			//PARTIDOS COPA Y LO OTRO
			
//			Equipo e1 = new Equipo("equipo local 1");
//			Equipo e2 = new Equipo("equipo visitante 1");
//			PartidoSimple partido1 = new PartidoSimple(e1, e2);
//			partido1.setGolesLocal(11);
//			partido1.setGolesVisitante(22);
//			
//			PartidoSimple partido2 = new PartidoSimple(e1, e2);
//			partido2.setGolesLocal(9);
//			partido2.setGolesVisitante(9);
//			
//			PartidoDeCopa partidoCopa = new PartidoDeCopa(e1, e2);
//			partidoCopa.setPartidoDeIda(partido1);
//			partidoCopa.setPartidoDeVuelta(partido2);
//			
//			partidoCopa.setPenalesLocal(200);
//			partidoCopa.setPenalesVisitante(300);
//			
//			session.saveOrUpdate(partidoCopa);
			
			//HABILIDAD Y POSICION
			
//			Habilidad hab1 = new HabilidadImpl(Posicion.ARQUERO, 10);
//			
//			session.saveOrUpdate(hab1);
//			
//			Habilidad recuperada = (Habilidad) session.get(HabilidadImpl.class, 1);
//			
//			System.out.println(recuperada.getValor(Posicion.ARQUERO));
//			
			
			//TITULAR
			
//			Jugador j1 = new Jugador("EL TITULAR");
//			Titular t1 = new Titular(j1, Posicion.ARQUERO);
//			
//			session.saveOrUpdate(t1);
//			transaction.commit();
			
			//FORMACION
			
			List<Jugador> jugadores = new ArrayList<Jugador>();
			jugadores.add(new Jugador("SUPLENTE CAPO"));
			
			
			Jugador titu = new Jugador("TITULAR SUPER CAPO");
			List<Titular> titulares = new ArrayList<Titular>();
			titulares.add(new Titular(titu, Posicion.DELANTERO));
			
			Equipo e1 = new Equipo("equipo formacion");
			
			Formacion formacion = new Formacion();
			
			formacion.setSuplentes(jugadores);
			formacion.setTitulares(titulares);
			formacion.setEquipo(e1);
			
			FormacionStrategy fs = new FormacionStrategyImpl();
			
			session.saveOrUpdate(fs);
			session.saveOrUpdate(formacion);
			
			transaction.commit();
			
		} catch (Exception e) {
			transaction.rollback();
			throw e;
		} finally {
			session.close();
		}
	}
}
